import { EggAppConfig, PowerPartial } from "egg";
import { dialect } from "../db";
import * as path from "path";
import pkjson = require("../package.json");

const {
  mysql: { development: dbConfig }
} = dialect;

export default () => {
  const config: PowerPartial<EggAppConfig> = {};

  config.logger = {
    dir: path.resolve(__dirname, "..", "logs", pkjson.name + "-local")
  };

  config.swaggerdoc = {
    dirScanner: "./app/controller", // 配置自动扫描的控制器路径。
    apiInfo: {
      title: "流媒体管理", // 接口文档的标题。
      description: "流媒体平台、应用及设备管理", // 接口文档描述。
      version: "1.0.0" // 接口文档版本。
    },
    schemes: ["http"], // 配置支持的协议。
    consumes: ["application/json"], // 指定处理请求的提交内容类型（Content-Type），例如application/json, text/html。
    produces: ["application/json"], // 指定返回的内容类型，仅当request请求头中的(Accept)类型中包含该指定类型才返回。
    securityDefinitions: {},
    enableSecurity: false, // 是否启用授权，默认 false（不启用）。
    routerMap: true, // 是否启用自动生成路由，默认 true (启用)。
    enable: true // 默认 true (启用)。
  };

  config.mysql = {
    client: {
      host: dbConfig.host,
      port: dbConfig.port,
      user: dbConfig.username,
      password: dbConfig.password,
      database: dbConfig.database
    },
    app: true,
    agent: false
  };
  config.sequelize = {
    dialect: dbConfig.dialect,
    host: dbConfig.host,
    port: dbConfig.port,
    username: dbConfig.username,
    password: dbConfig.password,
    database: dbConfig.database,
    define: {
      timestamps: true,
      freezeTableName: true
    }
  };
  return config;
};
